Computer software applications allow users to create a variety of documents for use in work, education and leisure. For example, a spreadsheet application allows users to store, manipulate, print and display a variety of alphanumeric data. A word processing application allows users to create letters, articles, books, memoranda, and the like. Such applications have a number of well-known strengths, including rich editing, formatting and calculation.
To keep up with demands for more advanced functionality for such computer software applications, software developers have begun to use structured data formats, including markup languages such as eXtensible Markup Language (XML), to allow users to annotate a software application document to give the document a useful structure apart from the normal functionality of the software application responsible for creating the document or the visible formatting associated with the document. For example, the user may wish to create using her spreadsheet application a template document for preparation of a purchase order to be used in her company's sales department. By applying structure to the document, purchasers or other institutions or persons receiving the document may make use of the structure by processing the document to utilize data defined by the document structure.
Some software applications, such as word processing applications, allow users to annotate a document with XML elements so that the user may define certain data types and data definitions for data inserted into the document. A resume document, for example, may include an “experience” section in which the user will include present and past work experience. Using XML, the user may desire to markup the “experience” section of the document to define that certain allowable information in a prescribed order and in a prescribed number may be included in the “experience” section of the document. For example, the user may wish to markup the experience section of the document to allow four present or past experience items.
Unfortunately, prior art spreadsheet applications allow very limited use of XML data. Bulk XML data may be imported where the user points to an XML file and the spreadsheet application imports that file into the spreadsheet grid. But, the user gets no control over how the data is laid out or which data is imported because all of the data is imported. Under prior spreadsheet applications, manual coding of XML data to a spreadsheet application may be required in which a programmer writes their own custom code for handling import and/or export of XML data. This code may be in the form of an XSLT transformation file, or it may be a more traditional programming language like VBA or C++. Such custom programming is time consuming, expensive and is difficult to apply generally to spreadsheet documents.
Prior spreadsheet applications do not establish a relationship between the XML data and the spreadsheet grid. A relationship between the XML data and the grid allows the user to have a custom view of the XML data. For example, if a user only wants elements <a>, <b>, and <e> to show up in the grid, and to skip elements <c> and <d>, that preference needs to be stored somewhere. Furthermore, if the user wants element <b> to be displayed first and show up in column A, followed by elements <a> and <e> in columns B and C, that preference needs to be stored as well. If the user wants the data to begin appearing in row 6 rather than at the top of the grid sheet, that preference will need to be stored as well. Because prior spreadsheet applications allow no custom control over how the data is imported and displayed, there is nothing for the spreadsheet application to remember about the data. Accordingly, no relationship, between the spreadsheet and the XML data is established.
Accordingly there is a need in the art for methods and systems that allow users to import and/or export XML data to and from spreadsheet grids. There is further a need for methods and systems for that allow spreadsheet documents to exchange data with other XML-enabled applications whether or not the other applications understand the programming or functionality of the spreadsheet application. There is further a need for methods and systems that allow users to build custom spreadsheet application views of XML data so that they may readily view, analyze, edit, and produce XML data. There is further a need for methods and systems that allow programmers to write programs that interact directly with XML data in a spreadsheet grid using an XML context.
It is with respect to these and other considerations that the present invention has been made.